﻿using Microsoft.AspNetCore.Http;
using NWebsec.Helpers;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TianShiProject.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.EntityFrameworkCore;
using Qiniu.Http;
using Qiniu.Util;
using Newtonsoft.Json;
using TianShiProject.Models.Common;


namespace TianShiProject.IFileCommonServices
{
    public class FileCommonService : DapperDbContextRepository, IFileCommonService
    {
        public FileCommonService(IDbContextProvider<TianShiProjectDbContext> dbContextProvider) : base(dbContextProvider)
        {
        }

        /// <summary>
        /// 上传一个文件，并返回文件上传成功后的信息
        /// </summary>
        /// <param name="File">要上传的文件实体</param>
        /// <returns>文件上传成功后返回的文件相关信息</returns>
        //public async Task<FileUploadOutputDto> UploadFile(IFormFile File)
        //{
        //    try
        //    {
        //        //文件的原始名称
        //        string FileOriginName = File.FileName;

        //        //读取文件保存的根目录
        //        //string fileSaveRootDir = ("App", "FileRootPath");
        //        //读取办公管理文件保存的模块的根目录
        //       // string fileSaveDir = ("App", "OAFiles");

        //        //新名称
        //        var newFileName = Guid.NewGuid().ToString();
        //        //获取扩展名
        //        var extendNames = Path.GetExtension(FileOriginName);
        //        //路径
        //        var newName = newFileName + extendNames;
        //        //文件保存的相对文件夹(保存到wwwroot目录下)
        //       // string absoluteFileDir = fileSaveRootDir + "/" + fileSaveDir;

        //        //文件保存的路径(应用的工作目录+文件夹相对路径);
        //        string fileSavePath = Environment.CurrentDirectory + "/wenjianweiz/" + newName;

        //        if (!Directory.Exists(fileSavePath))
        //        {
        //            Directory.CreateDirectory(fileSavePath);
        //        }

        //        //生成文件的名称
        //        string Extension = Path.GetExtension(FileOriginName);//获取文件的源后缀
        //        if (string.IsNullOrEmpty(Extension))
        //        {
        //            throw new UserFriendlyException("文件上传的原始名称好像不对哦，没有找到文件后缀");
        //        }
        //        string fileNames = Guid.NewGuid().ToString() + Extension;//通过uuid和原始后缀生成新的文件名

        //        //最终生成的文件的相对路径（xxx/xxx/xx.xx）
        //        string finalyFilePath = fileSavePath + "/" + fileNames;

        //        FileUploadOutputDto result = new FileUploadOutputDto();

   

        //        ////打开上传文件的输入流
        //        Stream stream = File.OpenReadStream();
        //        ////创建输入流的reader
        //        ////var fileType = stream.GetFileType();
        //        ////文件大小
        //        result.FileLength = stream.Length;
        //        result.FileName = FileOriginName;
        //        result.FileType = Extension.Substring(1);
        //        result.FileUrl = newName + "/" + fileNames;
              
        //        //开始保存拷贝文件
        //        FileStream targetFileStream = new FileStream(finalyFilePath, FileMode.OpenOrCreate);
        //        await stream.CopyToAsync(targetFileStream);


        //        return  result;
        //    }
        //    catch (Exception ex)
        //    {
        //        throw new UserFriendlyException("文件上传失败，原因" + ex.Message);
        //    }
        //}

      
        ///// <summary>
        ///// 简单上传-上传小文件
        ///// </summary>
        //public async Task<string> UploadFileQiNiu(string filme)
        //{
        //    var extename = filme.Substring(filme.LastIndexOf('.'), filme.Length - filme.LastIndexOf('.'));
        //    extename=extename.Replace("\"","");
        //    // 生成(上传)凭证时需要使用此Mac
        //    // 这个示例单独使用了一个Settings类，其中包含AccessKey和SecretKey
        //    // 实际应用中，请自行设置您的AccessKey和SecretKey
        //    Mac mac = new Mac("hrGZuiprXwlp5U59A1xbVTE6LzRS1wQbbc4bRuFa", "34Rtybu5AOGCFeRoDq6vyvhqZek1vbOKgHuPZNd6");
        //    string bucket = "test";
        //    string saveKey = "1.png";
           
        //    // 上传策略，参见 
        //    // https://developer.qiniu.com/kodo/manual/put-policy
        //    PutPolicy putPolicy = new PutPolicy();
        //    // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖)，请使用 SCOPE = "BUCKET:KEY"
        //    // putPolicy.Scope = bucket + ":" + saveKey;
        //    putPolicy.Scope = bucket;
        //    // 上传策略有效期(对应于生成的凭证的有效期)          
        //    putPolicy.SetExpires(3600);
        //    // 上传到云端多少天后自动删除该文件，如果不设置（即保持默认默认）则不删除
        //    putPolicy.DeleteAfterDays = 1;
        //    // 生成上传凭证，参见
        //    // https://developer.qiniu.com/kodo/manual/upload-token            
        //    string jstr = putPolicy.ToJsonString();
        //    string token = Auth.CreateUploadToken(mac, jstr);
        //    FormUploader um =new FormUploader();
        //    var shuqju= "D:\\TianShiTMS\\API\\src\\TianShiProject.Web\\wenjianweiz\\";
        //    HttpResult result = um.UploadFile(shuqju + filme, saveKey, token);
        //    Console.WriteLine(result);
        //    return  "http://r5vuofi95.hb-bkt.clouddn.com/"+filme;
         
           
        //}

        

        

    }
}
